package com.server.questionbank.snframe.service.OllamaService;

import com.server.questionbank.snframe.domain.Ollama.Chat;
import com.server.questionbank.snframe.domain.Ollama.ChatType;
import com.server.questionbank.snframe.domain.Ollama.OllamaRespone;
import com.server.questionbank.snframe.domain.ResDTO.ResponseResult;
import reactor.core.publisher.Flux;

import java.util.List;
import java.util.Map;

public interface OllamaService {
    // 创建会话
    public OllamaRespone createChat(ChatType type, String greetings, Long userId);

    // 获取用户的所有会话
    public List<Chat> getChats(Long userId);

    /*
    * 发送消息 通用消息
    * 临时对话, 对话记录将临时保存在 Redis 中 (默认为最后一次回答的3个小时后删除)
    * 若 expiration 参数, 为 0 时, 使用默认时长（3小时）
    * 若 expiration 参数, 为 -1 时, 不设置过期时间（永久保存）
     */
    public Flux<OllamaRespone> sendGeneralMessage(OllamaRespone input);

    // 获取总记录数
    public ResponseResult<Long> getTotalRecords(String sessionId);

    // 获取会话历史记录
    public ResponseResult<List<Map<String, String>>> getChatHistory(String sessionId);

    // 删除会话
    public ResponseResult<Boolean> deleteChat(String sessionId, Long userId);
}
